package com.woniuxy.service.impl;

import com.woniuxy.dao.DrugDao;
import com.woniuxy.dao.DrugItemDao;
import com.woniuxy.entity.*;
import com.woniuxy.service.DrugItemService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.List;

@Slf4j
@Service
public class DrugItemServiceImpl implements DrugItemService {

    @Autowired
    DrugItemDao drugItemDao;
    @Autowired
    DrugDao drugDao;

    @Override
    public List<DrugPriceAndNum> selectDrugPriceAndNumByNo(String prescriptionNo) {
        return drugItemDao.selectDrugPriceAndNumByNo(prescriptionNo);
    }

    @Override
    public void addDrugItems(DrugItem drugItem) {
        //添加进入订单，库存需要减少
        drugDao.updataDrug(drugItem.getDrugId(),-drugItem.getNum());
        log.info("删除了"+-drugItem.getNum());
        int num = drugItem.getNum();
        BigDecimal price = drugItem.getPrice();

        //已经有该订单则修改数量，没有则新增，需要用条目主键
        DrugItem findDrugItem = drugItemDao.selectDrugItemsByNoAndId(drugItem.getPrescriptionNo(), drugItem.getDrugId());
        if(findDrugItem==null){

            drugItem.setDrugItemTotalPrice( price.multiply(new BigDecimal(num)));
            drugItemDao.insertDrugItems(drugItem);
            log.debug("新添加一条药品处方");
        }else{
            drugItem.setDrugItemTotalPrice(price.multiply(new BigDecimal(num+findDrugItem.getNum())));
            drugItemDao.updataDrugItemNumById(findDrugItem.getDrugItemId(), drugItem.getNum(),drugItem.getDrugItemTotalPrice());
            log.debug("修改药品处方中药品数量");
        }



    }

    @Override
    public void deleteDrugItems(DrugItem drugItem) {
        //删除订单，库存需要增加
        drugDao.updataDrug(drugItem.getDrugId(),drugItem.getNum());
        log.info("库房增加的数量是"+drugItem.getNum());
        int id = drugItem.getDrugItemId();
        log.info("删除的药品处方条目号是"+id);
        drugItemDao.deleteDrugItemById(id);
    }

    @Override
    public PageBean<DrugItem> getAllDrugItemByPrescriptionNo(String prescriptionNo, int pageIndex, int pageSize) {

        List<DrugItem> drugItems = drugItemDao.selectDrugItemsByNo(prescriptionNo, pageIndex, pageSize);
        Drug drug = new Drug();
        for(DrugItem drugItem:drugItems){
            drug.setDrugId(drugItem.getDrugId());
            List<Drug> drugs = drugDao.selectAllDrug(drug, 1, 1);
            log.debug("查询出的药品是"+drugs.get(0));
            drugItem.setDrug(drugs.get(0));
        }

        PageBean<DrugItem> pageBean = new PageBean<>();
        pageBean.setBeanList(drugItems);
        pageBean.setPageIndex(pageIndex);
        pageBean.setPageSize(pageSize);
        int totalRecord = drugItemDao.getDrugItemNum(prescriptionNo);
        pageBean.setTotalRecord(totalRecord);
        return pageBean;
    }
}
